package controllers;

import beans.InhoudBean1;
import connectivity.Dbmanager;
import connectivity.QueryManager;
import java.io.*;
import java.util.LinkedList;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.swing.JOptionPane;
import models.User;
import tools.Encryptor;

public class RegisterController extends HttpServlet {

    private Dbmanager dbManager;
    private QueryManager queryManager;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        RequestDispatcher dispatcher = request.getRequestDispatcher("/register.jsp");
        dispatcher.forward(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {

        User user = new User();
        String gebruikersnaam = "";
        String voornaam = "";
        String achternaam = "";
        String email = "";
        String wachtwoord = "";
        String wachtwoord2;
        HttpSession sessie = request.getSession();
        boolean falsepassword = false;
        boolean nopassword = false;
        boolean isEmpty = false;
        String address = null;
        InhoudBean1 inhoud = (InhoudBean1) sessie.getAttribute("inhoud");

        dbManager = new Dbmanager();
        dbManager.openConnection();
        queryManager = new QueryManager(dbManager);




        if (!request.getParameter("gebruikersnaam").isEmpty()) {
            gebruikersnaam = request.getParameter("gebruikersnaam");
        } else {
            isEmpty = true;
            sessie.setAttribute("foutMelding", inhoud.getError6());
        }
        if (!request.getParameter("voornaam").isEmpty()) {
            voornaam = request.getParameter("voornaam");
        } else {
            isEmpty = true;
            sessie.setAttribute("foutMelding", inhoud.getError7());
        }
        if (!request.getParameter("achternaam").isEmpty()) {
            achternaam = request.getParameter("achternaam");
        } else {
            isEmpty = true;
            sessie.setAttribute("foutMelding", inhoud.getError8());
        }
        if (!request.getParameter("email").isEmpty()) {
            email = request.getParameter("email");
        } else {
            isEmpty = true;
            sessie.setAttribute("foutMelding", inhoud.getError9());
        }
        if (!request.getParameter("wachtwoord").isEmpty()) {
            if (!request.getParameter("cwachtwoord").isEmpty()) {
                wachtwoord = request.getParameter("wachtwoord");
                wachtwoord2 = request.getParameter("cwachtwoord");

                if (wachtwoord.equals(wachtwoord2)) {
                    wachtwoord = Encryptor.encrypt(wachtwoord);
                    user.setWachtwoord(wachtwoord);
                    queryManager.updatePassword(user);
                } else {
                    isEmpty = true;
                    sessie.setAttribute("foutMelding", inhoud.getError13());
                }
            } else {
                isEmpty = true;
                sessie.setAttribute("foutMelding", inhoud.getError12());
            }
        }



        if (isEmpty) {
            address = "/register.jsp";
        } else {
            user.setVoornaam(voornaam);
            user.setAchternaam(achternaam);
            user.setGebruikersnaam(gebruikersnaam);
            user.setEmail(email);
            user.setWachtwoord(wachtwoord);

            queryManager.adduser(user);

            address = "/login.jsp";
            wachtwoord = null;
        }

        dbManager.closeConnection();

        RequestDispatcher dispatcher = request.getRequestDispatcher(address);
        dispatcher.forward(request, response); //Stuurt door naar de Gebruikers index
    }
}

